//package com.yupi.yuapidemo.aop;
//
//import com.alibaba.fastjson.JSON;
//import org.aspectj.lang.JoinPoint;
//import org.aspectj.lang.Signature;
//import org.aspectj.lang.annotation.Before;
//import org.aspectj.lang.annotation.Pointcut;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.stereotype.Component;
//import org.springframework.web.bind.WebDataBinder;
//import org.springframework.web.bind.annotation.InitBinder;
//import org.springframework.web.bind.annotation.ModelAttribute;
//import org.springframework.web.bind.annotation.RestControllerAdvice;
//import org.springframework.web.context.request.RequestAttributes;
//import org.springframework.web.context.request.RequestContextHolder;
//
//import javax.servlet.http.HttpServletRequest;
//import java.util.Enumeration;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * @author zz_source
// * @creat 2023-01-11-15:25
// */
//
//
///**
//* @description
//* @return
//* @author
//* @date 2023/1/16 1:00
//*/
//@Component
//
//public class InvokeCountAOP {
//
//    Logger logger = LoggerFactory.getLogger(InvokeCountAOP.class);
//
//    public static final String REQUEST_SOURCE = "gateway";
//
//    // execution(<修饰符模式>？<返回类型模式><方法名模式>(<参数模式>)<异常模式>?)
//    // execution()，表达式的主体
//    // 第一个“*”符号，表示返回值类型任意；
//    // com.yupi.yuapidemo.controller ，表示包名称
//    // .. 表示当前包和子包
//    // * 表示所有类
//    // .*(..) 表示如何方法名
//    @Pointcut("execution(* com.yupi.yuapidemo.controller..*.*(..))")
//    public void executeService(){
//
//    }
//
//    @Before("executeService()")
//    public void doBeforeAdvice(JoinPoint joinPoint) {
//        logger.info("AOP 调用开始...");
//        ////获取目标方法的参数信息
//        //Object[] obj = joinPoint.getArgs();
//        ////AOP代理类的信息
//        //joinPoint.getThis();
//        ////代理的目标对象
//        //joinPoint.getTarget();
//        ////用的最多 通知的签名
//        //Signature signature = joinPoint.getSignature();
//        ////代理的是哪一个方法
//        //logger.info("==> 代理的是哪一个方法 :"+signature.getName());
//        ////AOP代理类的名字
//        //logger.info("==> AOP代理类的名字:"+signature.getDeclaringTypeName());
//        ////AOP代理类的类（class）信息
//        //signature.getDeclaringType();
//        //获取RequestAttributes
//        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
//        //从获取RequestAttributes中获取HttpServletRequest的信息
//        HttpServletRequest request = (HttpServletRequest) requestAttributes.resolveReference(RequestAttributes.REFERENCE_REQUEST);
//        logger.info("==> 请求者的IP："+request.getRemoteAddr());
//        String source = request.getHeader("source");
//        if(!REQUEST_SOURCE.equals(source)){
//
//        }
//        //如果要获取Session信息的话，可以这样写：
//        //HttpSession session = (HttpSession) requestAttributes.resolveReference(RequestAttributes.REFERENCE_SESSION);
//        //Enumeration<String> enumeration = request.getParameterNames();
//        //Map<String,String> parameterMap = new HashMap<String,String>();
//        //while (enumeration.hasMoreElements()){
//        //    String parameter = enumeration.nextElement();
//        //    parameterMap.put(parameter,request.getParameter(parameter));
//        //}
//        //String str = JSON.toJSONString(parameterMap);
//        //if(obj.length > 0) {
//        //    logger.info("==> 请求的参数信息为："+str);
//        //}
//    }
//}
